iT邦幫忙

2021 iThome 鐵人賽

DAY 22
1
DevOps

不僅是程式碼代管平台 - Github 能做些什麼?系列 第 22

GitHub Advanced Security - 秘密掃描 (Secret Scanning)

  • 分享至 

  • xImage
  •  

Repository 最擔心的事情莫過不小心加入 Secret,尤其是 Public Repository,一來可能將伺服器、資料庫或其他服務直接開放讓大眾看光光,二來若處理不當,可能會保存在歷史記錄內,被爬蟲程式找出進而惡意使用,不得不謹慎。為了避免開發者疏忽大意將敏感資料放置 Repository,GitHub 本身加入了 Secret Scanning,若您為 Public Repository 則預設為啟用並對於已知類型的 Secret 進行掃描,避免意外事件而導致機密資訊外洩。

Secret Scanning 強制對 Public Repo 進行啟用(不能關閉);若為 Private Repo,則需要啟用 GitHub Advanced Security (Enterprise 版本)

Secret Scanning 不僅僅對於最新版本或主要分支(Main),甚至對於所有分支與整個 Git 紀錄進行掃描

常見的 Secret 為 token 或 private key,通常用於與外部服務進行溝通,由供應商所提供,通常建議不要儲存於 Repository,而是存在外部專用的安全位置。部分資訊可以參考:GitHub Action YAML 撰寫技巧 - 環境變數(Environment Variables) 與 秘密 (Secrets)

若有開發者提交貢獻時不小心簽入 Repository,Secret Scanning 透過比對會找出該 Secret ,並由其他 Provider 以郵件通知 Repository Owner,Secret 被加入至 Public Repo。
https://ithelp.ithome.com.tw/upload/images/20210923/2009149454ze5m7LLf.png

已知的 Secret 如 Azure DevOps Personal Access Token、Databricks Access Token、Google API Key...等,可以參考官方文件 About secret scanning,有提供更多已知類型秘密。

若您的服務也有提供相關的驗證授權機制,可以考慮加入 Secret scanning partner program


實際測試

注意:下列為危險操作

舉個例子,我們將 Azure DevOps Personal Access Token 加入到 Repo 某個檔案內,過沒多久,Azure DevOps Service 即發初通知告知我,我的 PAT 在某個 GitHub Public Repo 內被掃描出來
https://ithelp.ithome.com.tw/upload/images/20210923/20091494L49UzqQmXh.png

另一個例子,是將 GitHub Personal Access Token 加入到 Repo 某個檔案內,過沒多久,GitHub 隨即通知我類似的警告
https://ithelp.ithome.com.tw/upload/images/20210923/20091494NBZ7MrAtni.png


閱讀完上一篇 GitHub Advanced Security - 程式碼掃描 與本篇文章,應該對於 GitHub 進階安全功能有進一步了解。也如果先前所提到 因為 GitHub 以社群與開源協作 為出發點,所以與其他市面上常見的 DevOps 工具有所不同,很早就將基本安全機制內建於服務中,而不是讓使用者以選擇性方式加入 DevOps 工具中。希望讀者除了熟悉這些安全功能如何使用,也能透過這些既有功能,進一步思考如何在日常開發過程中,避免產生安全漏洞行為出現,才能達到 DevSecOps 的最原始的目的。

若喜歡我的文章,歡迎點 like, 分享與訂閱。


補充:私有儲存庫排除 Secret Scanning

你可以在 Repository 手動加入 .github/secret_scanning.yml 檔案,並透過設定 paths-ignore,來排除掃描特定檔案

https://ithelp.ithome.com.tw/upload/images/20210922/20091494QIG0pI334k.png

paths-ignore:
  - "Config/*.config"

參考資料

https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning


上一篇
GitHub Advanced Security - 程式碼掃描 (Code Scanning)
下一篇
GitHub Action Security - 小心 workflow 洩漏敏感資訊
系列文
不僅是程式碼代管平台 - Github 能做些什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言